using System.Collections;
using System.Collections.Generic;
using Game;
using GameStates;
using UnityEngine;

namespace GameInitializers
{
    /**
     * 游戏状态初始化器 (GameStateInitializer)
     * 
     * 功能说明：
     * - 负责初始化游戏状态机
     * - 设置游戏的初始状态（Logo状态）
     * - 确保游戏启动后进入正确的状态
     * 
     * 设计说明：
     * - 继承自GameInitializer基类
     * - 重写Initialize方法实现状态机初始化
     * - 作为组件添加到GameApp对象上
     * 
     * 执行时机：
     * - 在GameApp.Start()中被调用
     * - 在状态机初始化完成后执行
     * - 设置游戏的第一个状态
     */
    public class GameStateInitializer : GameInitializer
    {
        /**
         * 初始化游戏状态机
         * 
         * 功能：
         * - 将状态机初始化为Logo状态
         * - 启动游戏的第一个状态
         * - 开始游戏的主流程
         * 
         * 参数：
         * - gameApp: 游戏主应用实例
         * 
         * 执行流程：
         * 1. 创建GameStateLogo状态实例
         * 2. 切换到Logo状态
         * 3. 开始游戏启动流程
         */
        public override void Initialize(GameApp gameApp)
        {
            Debug.Log("GameStateInitialize: 开始初始化游戏状态机");

            // 将状态机初始化为Logo状态
            // Logo状态是游戏的第一个状态，负责显示启动画面
            gameApp.StateMachine.ChangeState(new GameStateLogo());

            Debug.Log("GameStateInitialize: 游戏状态机初始化完成 - 已切换到Logo状态");
        }
    }
}